草庐IT

Java TreeMap 比较器

全部标签

java - 使用 equals 和 compareTo 进行字符串比较 - 哪个更快?

我需要比较2个字符串。我有以下我能想到的方法:equalsIgnoreCase-听说这是最快的,但我不能使用它,因为我的字符串区分大小写匹配-可能是最慢的一个等于比较所以在上面的选项中,我只剩下equals和compareTo。哪个更快?注意:输入的字符串数量庞大[每秒约5000个]。 最佳答案 请注意compareTo之间的一个非常重要的区别和equals:"myString".compareTo(null);//Throwsjava.lang.NullPointerException"myString".equals(null)

Java:为什么我不能在比较器中抛出异常?

直接的答案是因为Comparator.compare的接口(interface)被指定为不会抛出异常。但这是为什么呢?或者换句话说:我的Comparator必须依赖于一个可以抛出异常的函数。从理论上讲,这不应该发生。但如果发生这种情况,我希望它能从我使用Comparator的整个函数中脱离出来(在Collections.sort中)。IE。我希望它的行为就像发生了未处理的异常一样。这似乎以一种明显的自然方式是不可能的(因为如果接口(interface)说它不能抛出异常,它就不能)。我该如何解决这个问题?使用丑陋的try/catch并打印出异常并希望我能识别它?这似乎是一种非常丑陋的方式

Java比较无序的ArrayLists

有人知道判断两个数组列表是否包含相同值的有效方法吗?代码:ArrayListdummy1=newArrayList();list1.put("foo");list1.put("baa");ArrayListdummy2=newArrayList();list1.put("baa");list1.put("foo");dummy1==dummy2挑战在于数组列表的值顺序不同..(foo,baa)==(foo,baa)//perdefinition:)我需要得到这个(foo,baa)==(baa,foo)//true那么您的方法是什么? 最佳答案

java - 为什么使用 == 比较枚举会导致 PMD 警告?

以下使用==比较两个枚举值:MyEnumenum1=blah();//couldreturnnullMyEnumenum2=blahblah()//couldreturnnullif(enum1==enum2){//...}但是PMD给出了一个CompareObjectsWithEquals第3行警告:Useequals()tocompareobjectreferences不确定我是否理解sourcecodeforthischeck但认为使用==比较两个枚举是可以的,所以我想知道我的代码是否可以改进或者检查不正确。 最佳答案 这确实

java - 有没有办法用 Hamcrest 对嵌套属性进行深入比较

我的大部分测试都使用hamcrest,但遇到了一个问题,它无法测试对象图中下一层的属性。下面是我的测试用例的片段finalListfoos=fooRepository.findAll(spec);assertThat(results,is(notNullValue()));assertThat(results,hasItem(hasProperty("id.fooID1",equalTo("FOOID1"))));所以在这里我想检查foos列表中是否有属性id.fooID1equla到FOOID1。在这里我要向下一级检查我的嵌套属性。这目前在hamcrest中不起作用,我得到以下信息错

java - 使用JAVA比较两个xml文件

我必须要xml文件说abc.xml和123.xml几乎相似,我的意思是具有相同的内容,但第二个文件,即123.xml比前面的文件有更多的内容。我想使用Java读取这两个文件,并比较abc.xml中每个标签的内容是否与123.xml中的内容相同,类似于对象比较。请建议我如何使用java读取xml文件并开始比较。谢谢。 最佳答案 如果你只是想比较然后使用这个:DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();dbf.setNamespaceAware(true)

Java - 编码风格 : What are the cons and pros of "ABC". 等于 ("SOMESTRING") 风格字符串比较?

这个问题在这里已经有了答案:Whatistheproperwaytousea.equalsmethodinJava?(2个答案)关闭9年前。让我先从示例代码开始...Stringpassword="";if("PIRATE".equals(password)){//Dosomething}看这里,字符串常量或字面量(无论什么)“PIRATE”用于检查两个字符串的相等性。而...Stringpassword="";if(password.equals("PIRATE")){//Dosomething}这也与之前的代码完全一样。现在,我看到很多第一种样式"STRING_LITERAL".e

Java 字符串比较不起作用?

这个问题在这里已经有了答案:关闭10年前。我想这很简单,但我就是不明白如何做到这一点:(到目前为止,我已经尝试了==和equals,但我都没有用。这是一个计算成绩的小程序对于瑞典高中系统(所以忽略瑞典语并查看字符串比较。这里的问题是统计函数变量在程序结束时仍设置为0。importjavax.swing.*;publicclassUppgift1{privateString[]subjects={"Matematik","Svenska","Engelska","Idrott","Bild","Fysik","Biologi","Kemi","Historia","Geografi","

java - 比较 Java 中的整数数组。为什么 == 不起作用?

我正在学习Java,只是想出了关于该语言的这个微妙事实:如果我声明两个具有相同元素的整数数组并使用==比较它们,结果是false。为什么会这样?比较结果不应该为true吗?publicclassWhy{publicstaticvoidmain(String[]args){int[]a={1,2,3};int[]b={1,2,3};System.out.println(a==b);}}提前致谢! 最佳答案 使用Arrays.equals(arr1,arr2)方法。==运算符只是检查两个引用是否指向同一个对象。测试:int[]a={1,

java - 比较java中的数组

int[]nir1=newint[2];nir1[1]=1;nir1[0]=0;int[]nir2=newint[2];nir2[1]=1;nir2[0]=0;booleant=nir1.equals(nir2);booleanm=nir1.toString().equals(nir2.toString());为什么m和t都是假的?在Java中比较2个数组的正确方法是什么? 最佳答案 使用Arrays.equals方法。示例:booleanb=Arrays.equals(nir1,nir2);//printstrueinthisca